import pandas as pd
from loguru import logger

mock_click_js = """
function triggerFullClick(element) {
  // 1. 触发鼠标按下
  element.dispatchEvent(new MouseEvent('mousedown', {
    bubbles: true,
    cancelable: true,
    view: window
  }));

  // 2. 触发获取焦点
  element.focus();
  element.dispatchEvent(new Event('focus', {bubbles: true}));

  // 3. 触发鼠标释放
  element.dispatchEvent(new MouseEvent('mouseup', {
    bubbles: true,
    view: window
  }));

  // 4. 触发最终点击
  element.dispatchEvent(new MouseEvent('click', {
    bubbles: true,
    view: window
  }));
}

// 执行函数
triggerFullClick(this);
"""

default_file_name = "0421薇诺娜信息流计划搭建2.xlsx"

# 设置显示所有列（默认只显示部分列）
pd.set_option('display.max_columns', None)

# 设置显示所有行（默认只显示部分行）
pd.set_option('display.max_rows', None)

# 设置列宽（防止内容被截断）
pd.set_option('display.max_colwidth', 100)  # 设置每列最大显示宽度
def get_ad_config(row):
    if row['路径名称'] == "自点":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '点击量',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "手点1":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '点击量',
            'trans_platform': '',
            'bidding_type': '手动出价',
            'cost_ctr_type': '',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "手点2":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '点击量',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '点击成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "自互":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '互动量',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "互互":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '互动量',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '互动成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "互点":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '互动量',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '点击成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "站外":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '站外转化量',
            'trans_platform': '淘联-小红星',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "站点":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '站外转化量',
            'trans_platform': '淘联-小红星',
            'bidding_type': '自动出价',
            'cost_ctr_type': '点击成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "站外-cpc":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '站外转化量',
            'trans_platform': '京东-小红盟',
            'bidding_type': '自动出价',
            'cost_ctr_type': '点击成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "站盟-点":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '站外转化量',
            'trans_platform': '京东-小红盟',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "自动-CPI":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '种草人群规模',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "种草-CPI":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '种草人群规模',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '新增种草人群成本控制',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "自动-CPTI":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '深度种草人群规模',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "种草-CPTI":
        return {
            'ad_type': '信息流推广',
            'promotion_target': '深度种草人群规模',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '新增深度种草人群成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    #  视频流--------------------------------------------------------------------
    elif row['路径名称'] == "视自":
        return {
            'ad_type': '视频流推广',
            'promotion_target': '互动量',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "视互":
        return {
            'ad_type': '视频流推广',
            'promotion_target': '互动量',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '互动成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "视星":
        return {
            'ad_type': '视频流推广',
            'promotion_target': '站外转化量',
            'trans_platform': '淘联-小红星',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "视盟":
        return {
            'ad_type': '视频流推广',
            'promotion_target': '站外转化量',
            'trans_platform': '京东-小红盟',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "视草-控":
        return {
            'ad_type': '视频流推广',
            'promotion_target': '种草人群规模',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "视草-增":
        return {
            'ad_type': '视频流推广',
            'promotion_target': '种草人群规模',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '新增种草人群成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "视深-控":
        return {
            'ad_type': '视频流推广',
            'promotion_target': '深度种草人群规模',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "视深-增":
        return {
            'ad_type': '视频流推广',
            'promotion_target': '深度种草人群规模',
            'trans_platform': '',
            'bidding_type': '自动出价',
            'cost_ctr_type': '新增深度种草人群成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }

    ## 客资 - 全站智投
    elif row['路径名称'] == "客资-全开自自":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '全站智投',
            'promotion_target': '私信开口量',
            'trans_platform': '',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "客资-全开自开":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '全站智投',
            'promotion_target': '私信开口量',
            'trans_platform': '',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '私信开口成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "客资-全留自自":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '全站智投',
            'promotion_target': '私信留资量',
            'trans_platform': '',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "客资-全留自开":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '全站智投',
            'promotion_target': '私信留资量',
            'trans_platform': '',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '私信开口成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "客资-全留自留":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '全站智投',
            'promotion_target': '私信留资量',
            'trans_platform': '',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '私信留资成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    # 客资 - 信息流
    elif row['路径名称'] == "客资-信开自自":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '信息流推广',
            'promotion_target': '私信开口量',
            'trans_platform': '/',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "客资-信开自开":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '信息流推广',
            'promotion_target': '私信开口量',
            'trans_platform': '/',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '私信开口成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "客资-信留自自":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '信息流推广',
            'promotion_target': '私信留资量',
            'trans_platform': '/',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '自动控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "客资-信留自开":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '信息流推广',
            'promotion_target': '私信留资量',
            'trans_platform': '/',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '私信开口成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }
    elif row['路径名称'] == "客资-信留自留":
        return {
            '营销诉求': '客资收集',
            '投放模式': '手动投放',
            'ad_type': '信息流推广',
            'promotion_target': '私信留资量',
            'trans_platform': '/',
            'bidding_type': '自动出价 ',
            'cost_ctr_type': '私信留资成本控制 ',
            'search_fast': '不开启',
            'ad_group': '不加入'
        }

    # 客资 - 信息流
    else:
        return None  # 或者返回一个默认配置

def get_complete_sheet1(file_path=None):
    df = pd.read_excel(file_path, sheet_name="计划列表")  # sheet_name 可省略
    config_df = df.apply(get_ad_config, axis=1, result_type='expand')
    df = pd.concat([df, config_df], axis=1)
    return df

def get_complete_sheet_platform(file_path=None):
    try:
        df = pd.read_excel(file_path, sheet_name="平台精选")
        cols_to_fill = ['人群定向包']
        df[cols_to_fill] = df[cols_to_fill].ffill()
        # print(df['人群定向包'].tolist())
        # print(df['小类'].tolist())
        print(df)
        # print(df['一级选项'].str.split('\n').explode().tolist())
        return df
    except ValueError as e:
        if "Worksheet named '平台精选' not found" in str(e):
            print(f"警告: 文件 {file_path} 中不存在[平台精选]sheet")
            return pd.DataFrame()  # 返回带列名的空DF
        else:
            raise  # 重新抛出其他异常
    except Exception as e:
        print(f"读取文件失败: {e}")
        return pd.DataFrame()

def get_complete_sheet_indus_people(file_path=None):
    """
    读取行业人群sheet，若不存在返回空DataFrame
    """
    try:
        df = pd.read_excel(file_path, sheet_name="行业人群")
        # 处理合并单元格
        cols_to_fill = ['人群定向包', '小类', '一级选项']
        df[cols_to_fill] = df[cols_to_fill].ffill()
        print("成功加载数据:")
        print(df['人群定向包'].tolist())
        print(df.head())
        return df
    except ValueError as e:
        if "Worksheet named '行业人群' not found" in str(e):
            print(f"警告: 文件 {file_path} 中不存在[行业人群]sheet")
            return pd.DataFrame()  # 返回带列名的空DF
        else:
            raise  # 重新抛出其他异常
    except Exception as e:
        print(f"读取文件失败: {e}")
        return pd.DataFrame()
def get_complete_sheet_indus_inters(file_path=None):
    """
    读取行业兴趣sheet，若不存在返回空DataFrame
    """
    try:
        df = pd.read_excel(file_path, sheet_name="行业兴趣")
        # 处理合并单元格
        cols_to_fill = ['人群定向包', '小类', '一级选项']
        df[cols_to_fill] = df[cols_to_fill].ffill()
        print(df)
        return df
    except ValueError as e:
        if "Worksheet named '行业兴趣' not found" in str(e):
            print(f"警告: 文件 {file_path} 中不存在[行业兴趣]sheet")
            return pd.DataFrame()  # 返回空DF
        else:
            raise
    except Exception as e:
        print(f"读取文件失败: {e}")
        return pd.DataFrame()
def get_complete_sheet_keyword(file_path=None):
    """
    读取关键词sheet，若不存在返回空DataFrame
    """
    try:
        df = pd.read_excel(file_path, sheet_name="关键词").dropna(how="all")
        cols_to_fill = ['人群定向包']
        df[cols_to_fill] = df[cols_to_fill].ffill()
        print(df)
        return df
    except ValueError as e:
        if "Worksheet named '关键词' not found" in str(e):
            print(f"警告: 文件 {file_path} 中不存在[关键词]sheet")
            return pd.DataFrame()  # 返回空DF
        else:
            raise
    except Exception as e:
        print(f"读取文件失败: {e}")
        return pd.DataFrame()
def get_complete_sheet_crowd_pack(file_path=None):
    """
    读取关键词sheet，若不存在返回空DataFrame
    """
    try:
        df = pd.read_excel(file_path, sheet_name="人群包")
        print(df)
        return df
    except ValueError as e:
        if "Worksheet named '人群包' not found" in str(e):
            print(f"警告: 文件 {file_path} 中不存在[人群包]sheet")
            return pd.DataFrame()  # 返回空DF
        else:
            raise
    except Exception as e:
        print(f"读取文件失败: {e}")
        return pd.DataFrame()

def get_search_comp(file_path=None, sheet_name='创意信息'):
    """
    读取搜索组件sheet，若不存在返回空DataFrame
    """
    try:
        df = pd.read_excel(file_path, sheet_name=sheet_name)
        return df
    except ValueError as e:
        if "Worksheet named '搜索组件' not found" in str(e):
            print(f"警告: 文件 {file_path} 中不存在{sheet_name}sheet")
            return pd.DataFrame()  # 返回空DF
        else:
            raise
    except Exception as e:
        print(f"读取文件失败: {e}")
        return pd.DataFrame()
# get_search_comp(file_path='E:\\python\\autoPython\\dp_test\\0421薇诺娜信息流计划搭建.xlsx')